package com.ruoyi.system.service.impl;

import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.WokaCity;
import com.ruoyi.system.domain.WokaProvince;
import com.ruoyi.system.mapper.WokaProvinceMapper;
import com.ruoyi.system.service.IWokaProvinceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

/**
 * 省份信息Service业务层处理
 *
 * @author Simon
 * @date 2021-12-31
 */
@Service
public class WokaProvinceServiceImpl implements IWokaProvinceService {
    @Autowired
    private WokaProvinceMapper wokaProvinceMapper;

    /**
     * 查询省份信息
     *
     * @param code 省份信息主键
     * @return 省份信息
     */
    @Override
    public WokaProvince selectWokaProvinceByCode(String code) {
        return wokaProvinceMapper.selectWokaProvinceByCode(code);
    }

    /**
     * 查询省份信息列表
     *
     * @param wokaProvince 省份信息
     * @return 省份信息
     */
    @Override
    public List<WokaProvince> selectWokaProvinceList(WokaProvince wokaProvince) {
        return wokaProvinceMapper.selectWokaProvinceList(wokaProvince);
    }

    /**
     * 新增省份信息
     *
     * @param wokaProvince 省份信息
     * @return 结果
     */
    @Transactional
    @Override
    public int insertWokaProvince(WokaProvince wokaProvince) {
        int rows = wokaProvinceMapper.insertWokaProvince(wokaProvince);
        insertWokaCity(wokaProvince);
        return rows;
    }

    /**
     * 修改省份信息
     *
     * @param wokaProvince 省份信息
     * @return 结果
     */
    @Transactional
    @Override
    public int updateWokaProvince(WokaProvince wokaProvince) {
        wokaProvinceMapper.deleteWokaCityByProvinceCode(wokaProvince.getCode());
        insertWokaCity(wokaProvince);
        return wokaProvinceMapper.updateWokaProvince(wokaProvince);
    }

    /**
     * 批量删除省份信息
     *
     * @param codes 需要删除的省份信息主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteWokaProvinceByCodes(String[] codes) {
        wokaProvinceMapper.deleteWokaCityByProvinceCodes(codes);
        return wokaProvinceMapper.deleteWokaProvinceByCodes(codes);
    }

    /**
     * 删除省份信息信息
     *
     * @param code 省份信息主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteWokaProvinceByCode(String code) {
        wokaProvinceMapper.deleteWokaCityByProvinceCode(code);
        return wokaProvinceMapper.deleteWokaProvinceByCode(code);
    }

    /**
     * 新增城市信息信息
     *
     * @param wokaProvince 省份信息对象
     */
    public void insertWokaCity(WokaProvince wokaProvince) {
        List<WokaCity> wokaCityList = wokaProvince.getWokaCityList();
        String code = wokaProvince.getCode();
        if (StringUtils.isNotNull(wokaCityList)) {
            List<WokaCity> list = new ArrayList<WokaCity>();
            for (WokaCity wokaCity : wokaCityList) {
                wokaCity.setProvinceCode(code);
                list.add(wokaCity);
            }
            if (list.size() > 0) {
                wokaProvinceMapper.batchWokaCity(list);
            }
        }
    }
}
